home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 November / Macworld (1997-11).dmg / Updaters / PowerKey 3.3.3 Update / Extras / External Actions / Beeper / Beeper.c < prev    next >
C/C++ Source or Header  |  1997-01-23  |  1KB  |  62 lines

  1. #include<HyperXCmd.h>
  2.  
  3. #include <string.h>
  4.  
  5. #include <A4Stuff.h>
  6.  
  7. static void        xcmd_param_to_string ( Handle param, char *str, short max_len );
  8. static long        xcmd_param_to_num ( Handle param );
  9.  
  10. pascal void main ( XCmdPtr pb )
  11. {
  12.     EnterCodeResource();                            // Setup base registers so we can access global variables
  13.  
  14.     pb->returnValue = nil;                        // Setup return value field of pb
  15.  
  16.     if ( pb->paramCount == 0 )
  17.         SysBeep( 0L );
  18.     else
  19.     {
  20.         long        n, count;
  21.         
  22.         count = xcmd_param_to_num ( pb->params[0] );
  23.         for ( n = 1; n <= count; n++ )
  24.             SysBeep( 0L );
  25.     }
  26.         
  27.     ExitCodeResource();                            // Restore base registers before we return
  28.  
  29. }
  30.  
  31. static void xcmd_param_to_string ( Handle param, char *str, short max_len )
  32. {
  33.     SignedByte    state;
  34.     
  35.     if ((param == 0L) || (str == 0L))
  36.         return;
  37.  
  38.     state = HGetState (param);
  39.     HLock (param);
  40.     strncpy (str, *param, max_len);
  41.     str [max_len] = '\0';
  42.     
  43.     HSetState (param, state);
  44.     
  45.     return;
  46. }
  47.         
  48. static long xcmd_param_to_num ( Handle param )
  49. {
  50.     long        num = 0L;
  51.     char        temp [256];
  52.     char        *s;
  53.     
  54.     temp [0] = '\0';        
  55.     xcmd_param_to_string (param, temp, 255);
  56.     s = temp + strspn (temp, " ");
  57.     CtoPstr (s);
  58.     StringToNum ( (StringPtr)s, &num);
  59.     
  60.     return num;
  61. }
  62.